{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#导入必要的包\n",
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "train = pd.read_csv(\"./RentListingInquries_FE_train.csv\")\n",
    "test = pd.read_csv(\"./RentListingInquries_FE_test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "49352"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "train = train[:2000]\n",
    "test = test[:1000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "\n",
       "[2 rows x 228 columns]"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2950</td>\n",
       "      <td>1475.0</td>\n",
       "      <td>1475.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>950.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.0         1   2950           1475.0          1475.0        0.0   \n",
       "1        1.0         2   2850           1425.0           950.0       -1.0   \n",
       "\n",
       "   room_num  Year  Month  Day  ...   virtual  walk  walls  war  washer  water  \\\n",
       "0       2.0  2016      6   11  ...         0     0      0    0       0      0   \n",
       "1       3.0  2016      6   24  ...         0     0      0    1       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  \n",
       "0           0     0        0     0  \n",
       "1           0     0        0     0  \n",
       "\n",
       "[2 rows x 227 columns]"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,u'Number of occurrences')"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x13c369b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.interest_level)\n",
    "pyplot.xlabel(\"degree\")\n",
    "pyplot.ylabel(\"Number of occurrences\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# train.interest_level"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "X_train = train.drop(['interest_level'],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "\n",
       "   room_num  Year  Month  Day  ...   virtual  walk  walls  war  washer  water  \\\n",
       "0       4.5  2016      6   24  ...         0     0      0    0       0      0   \n",
       "1       3.0  2016      6   12  ...         0     0      0    0       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  \n",
       "0           0     0        0     0  \n",
       "1           0     0        0     0  \n",
       "\n",
       "[2 rows x 227 columns]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.00000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.00000</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>2000.00000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>2000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.193250</td>\n",
       "      <td>1.513000</td>\n",
       "      <td>3541.292000</td>\n",
       "      <td>1586.339399</td>\n",
       "      <td>1567.38471</td>\n",
       "      <td>-0.319750</td>\n",
       "      <td>2.706250</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.202000</td>\n",
       "      <td>15.763500</td>\n",
       "      <td>...</td>\n",
       "      <td>0.001000</td>\n",
       "      <td>0.00250</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.173500</td>\n",
       "      <td>0.009000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.02250</td>\n",
       "      <td>0.003000</td>\n",
       "      <td>0.001000</td>\n",
       "      <td>0.000500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.505131</td>\n",
       "      <td>1.100198</td>\n",
       "      <td>1931.386919</td>\n",
       "      <td>616.243198</td>\n",
       "      <td>816.37148</td>\n",
       "      <td>0.951624</td>\n",
       "      <td>1.423235</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.602808</td>\n",
       "      <td>8.219023</td>\n",
       "      <td>...</td>\n",
       "      <td>0.031615</td>\n",
       "      <td>0.04995</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.378774</td>\n",
       "      <td>0.094464</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.14834</td>\n",
       "      <td>0.054704</td>\n",
       "      <td>0.031615</td>\n",
       "      <td>0.022361</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>695.000000</td>\n",
       "      <td>327.272727</td>\n",
       "      <td>461.50000</td>\n",
       "      <td>-4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2495.000000</td>\n",
       "      <td>1200.000000</td>\n",
       "      <td>1065.00000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3065.000000</td>\n",
       "      <td>1497.500000</td>\n",
       "      <td>1357.87500</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3995.000000</td>\n",
       "      <td>1800.000000</td>\n",
       "      <td>1917.50000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.125000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>10.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>22000.000000</td>\n",
       "      <td>9375.000000</td>\n",
       "      <td>18750.00000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         bathrooms     bedrooms         price  price_bathrooms  \\\n",
       "count  2000.000000  2000.000000   2000.000000      2000.000000   \n",
       "mean      1.193250     1.513000   3541.292000      1586.339399   \n",
       "std       0.505131     1.100198   1931.386919       616.243198   \n",
       "min       0.000000     0.000000    695.000000       327.272727   \n",
       "25%       1.000000     1.000000   2495.000000      1200.000000   \n",
       "50%       1.000000     1.000000   3065.000000      1497.500000   \n",
       "75%       1.000000     2.000000   3995.000000      1800.000000   \n",
       "max      10.000000     6.000000  22000.000000      9375.000000   \n",
       "\n",
       "       price_bedrooms    room_diff     room_num    Year        Month  \\\n",
       "count      2000.00000  2000.000000  2000.000000  2000.0  2000.000000   \n",
       "mean       1567.38471    -0.319750     2.706250  2016.0     4.202000   \n",
       "std         816.37148     0.951624     1.423235     0.0     0.602808   \n",
       "min         461.50000    -4.000000     0.000000  2016.0     4.000000   \n",
       "25%        1065.00000    -1.000000     2.000000  2016.0     4.000000   \n",
       "50%        1357.87500     0.000000     2.000000  2016.0     4.000000   \n",
       "75%        1917.50000     0.000000     3.125000  2016.0     4.000000   \n",
       "max       18750.00000     8.000000    12.000000  2016.0     6.000000   \n",
       "\n",
       "               Day     ...           virtual        walk   walls          war  \\\n",
       "count  2000.000000     ...       2000.000000  2000.00000  2000.0  2000.000000   \n",
       "mean     15.763500     ...          0.001000     0.00250     0.0     0.173500   \n",
       "std       8.219023     ...          0.031615     0.04995     0.0     0.378774   \n",
       "min       1.000000     ...          0.000000     0.00000     0.0     0.000000   \n",
       "25%       9.000000     ...          0.000000     0.00000     0.0     0.000000   \n",
       "50%      15.000000     ...          0.000000     0.00000     0.0     0.000000   \n",
       "75%      22.000000     ...          0.000000     0.00000     0.0     0.000000   \n",
       "max      30.000000     ...          1.000000     1.00000     0.0     1.000000   \n",
       "\n",
       "            washer   water  wheelchair         wifi      windows         work  \n",
       "count  2000.000000  2000.0  2000.00000  2000.000000  2000.000000  2000.000000  \n",
       "mean      0.009000     0.0     0.02250     0.003000     0.001000     0.000500  \n",
       "std       0.094464     0.0     0.14834     0.054704     0.031615     0.022361  \n",
       "min       0.000000     0.0     0.00000     0.000000     0.000000     0.000000  \n",
       "25%       0.000000     0.0     0.00000     0.000000     0.000000     0.000000  \n",
       "50%       0.000000     0.0     0.00000     0.000000     0.000000     0.000000  \n",
       "75%       0.000000     0.0     0.00000     0.000000     0.000000     0.000000  \n",
       "max       1.000000     0.0     1.00000     1.000000     1.000000     1.000000  \n",
       "\n",
       "[8 rows x 227 columns]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    #这是一个三类分的问题\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类，将数据匹配成模型需要的数据类型\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "    #确定弱学习器的数目和迭代次数，调用train或者CV    \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits=5,shuffle=True,random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "xgb1 = XGBClassifier(\n",
    "    learning_rate=0.1,\n",
    "    n_estimators=1000,\n",
    "    #最好的参数\n",
    "    max_depth=3,\n",
    "    min_child_weight=3,\n",
    "    gamma=0,\n",
    "    #行列采样\n",
    "    subsample=0.3,\n",
    "    colsample_bytree=0.8,\n",
    "    colsample_bylevel=0.7,\n",
    "    #多类分问题，所以采用的是下面这个，logloss，所以是概率\n",
    "    objective='multi:softprob',\n",
    "    seed=3)\n",
    "modelfit(xgb1,X_train,y_train,cv_folds=kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd38f128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "72"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cvresult.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nIiISBwrGRERERERE4kDBmIiIiIiISBwoGBMREREREYkDBWMiIiIiIiJxoGBMREREREQkDhSMiYiI\niIiIxIGCMRERERERkThQMCYiIiIiIhIHCsZERERERETiQMGYiIiIiIhIHCgYExERERERiQMFYyIi\nIiIiInGgYExERERERCQOFIyJiIiIiIjEgYIxERERERGROFAwJiIiIiIiEgcKxnq4ULiF4mkzKJ42\ng1C4Jd7dERERERGRTlIwJiIiIiIiEgcKxkREREREROJAwZiIiIiIiEgcKBgTERERERGJAwVjIiIi\nIiIicaBgTEREREREJA4UjImIiIiIiMSBgjEREREREZE4UDAmIiIiIiISBwrGepFwS1u8uyAiIiIi\nIp2kYKyH21LVEHn+wycXKSATEREREekhFIz1cINyUiPPX/+4jG//Y74CMhERERGRHkDBWC8STEzg\n1WWlCshERERERHoABWO9yD2XT4gEZNc9tueALBRuoXjaDIqnzSAUbjmEvRQREREREVAw1qtMGZXH\nX688lmBiAq99XMp1j31IU0trvLslIiIiIiIxKBjrZU4bnc/9Vx5LcmICr31cxrcfm6+ATERERESk\nG1Iw1gudOjqf+6/aGZBd96gCMhERERGR7kbBWC91yqh8HrjqOJITE3h9eRnfUkAmIiIiItKtKBjr\nxaaMyosEZG8oIBMRERER6VYUjPVyU0bl8eDVOwOya//+IY3NCshEREREROJNwVgfcPJILyBLSUrg\nzRXlXPvohzQpIBMRERERiSsFY33EySPzePAqLyCbuaKc7z2+MN5dEhERERHp08w5F+8+9EhmlgVU\nV1dXk5WVFe/udNo7qyv42iMf0Ni8c0HoZbeeS1owsVPHh8ItjL35P/t8nIiIiIhIb1VTU0N2djZA\ntnOuprPHaWSsj5kcNWWxXUVdUxx7JCIiIiLSNykY64MmH5bHvVdMirz+zB/f4c3lZXHskYiIiIhI\n36NgrI86fni/yPPt9WG++vAH3PLcUmVaFBERERE5RBSMCVecOBSAh99Zz8X3zGHFtto490hERERE\npPdTMCb89PwjeOirx5GXEWRFaS0X3vM2D89Zh5K7iIiIiIgcPArGBIAzxgzgpetP5Ywx+YRb2rjl\n+WV89eEPKK9Vcg8RERERkYNBwZhE5Gcm8+DVx3HLhWMJJnrrkX3q928puYeIiIiIyEGgYEx2YWZc\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x13207470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "#从上图可以看出，从40以后，变化就不是很大了\n",
    "cvresult = cvresult.iloc[20:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(20,cvresult.shape[0]+20)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
